稳定性和性价比是云计算基础设施的核心竞争力。其中稳定性是基础中的基础,没有它,云计算的摩天大楼每分钟都可能变成危房。本文选自《企业数字化基石:阿里巴巴云计算基础设施实践》一书,带你了解阿里基础设施中的集群自动化运维。
随着云基础设施的规模越来越大,硬件故障已经成为常态,传统的人力介入方式已经无法应对,需要快速实现自动化处理的能力。同时为了能够提供更好的稳定性和运维效率,基础软件的版本更新迭代速度也至关重要。当前用户集群的线上环境复杂,存在多种硬件型号、操作系统和内核版本、系统配置参数等,提高云基础服务在高度异构环境下的运维安全和效率是我们关注的重点。
面向终态的设计思想和安全运维架构是整个集群运维平台设计的两大核心。面向终态的设计思想的主要目的是解决线上环境和版本一致性的问题,将不确定变得确定。通过配置文件定义的方式,明确目标状态,做到目标状态可描述。无论是配置变更,还是软件升级、硬件变更,都必须通过一个格式化的说明文件来提交。首先来看一下终态设计思想的必要性。如图 1 所示,软件运维变更操作是从软件当前状态开始,使得软件达到目标状态的操作。在分布式系统中,由于服务器数量巨大,每台机器的当前状态会不一致。服务器上的软件或系统在操作过程中的每个环节都有可能出错。
面向终态的设计思想是通过定义明确的目标状态,在当前状态不一致的情况下,利用不断追踪终态的手段达到目标状态,保证状态的最终一致性。终态定义需要非常明确的描述,从系统到软件版本和配置版本,都需要明确定义。通过终态定义与自动化运维手段的结合,可以很好地解决分布式系统线上操作一致性的问题。下面再来看一下终态系统的整体设计。在集群自动化运维平台中,用户终态描述文件被存储在一个 Git Store 中,变更提交之后,集群运维平台会将目标状态与当前状态做比较,根据差别将任务分配给不同的控制器去执行。控制器是整个系统的大脑。它时时刻刻对当前状态和目标状态进行比较,尝试驱动当前状态向终态对齐,整体流程如图 2 所示。这种架构设计实现了变更、回滚、维修、扩缩容操作的一致性。回滚是把目标状态简单恢复到前一个状态。集群运维平台会自动按照同样的逻辑来进行回滚操作。解决了线上一致性定义的问题,还需要思考如何解决当前态到终态的过程的安全可控性。在整个集群运维设计中,安全运维是底线,是整个架构设计中遵循的最高原则。从整个运维操作过程来看,理论上可以将其切分为4个部分(如图3 所示): 目标选择、业务迁移、运维执行、结果观察。目标选择主要解决运维对象问题——对谁操作;业务迁移主要解决如何保证运维操作的业务无损性(不会影响到用户应用程序);运维执行主要通过调用基础运维能力,完成相应的运维操作;结果观察是确认操作的结果是否符合预期。要做到整个运维流程可控,每个环节都需要系统性的思考,通过多种手段保证整个运维操作的安全性。在整个安全运维体系中,集群运维平台的创新点包含两部分。(1)云原生应用大多是有状态应用,且基本是应用内部状态,需要业务根据应用 内部状态给出反馈,平台不能替业务做判断。集群运维平台利用一套业务审批机制建立了完整的业务迁移体系,让业务能够感知运维操作,根据自身业务特点,做到业务 自动隔离。 (2)完整的监管控一体化机制,在结果观察阶段,利用基础设施和应用自身监 控,对运维操作做结果反馈,从另一个维度验证运维执行结果,防止运维操作失控。▊ 物理机集群智能自愈系统
上面提到的集群运维系统是规模化管理集群层物理机软硬件的运维系统。在发现线上问题的时候,为了能够快速诊断和修复,它还包含一个集群智能自愈系统。作为集群运维平台的核心模块之一,集群智能自愈系统承担了根据服务器状态监控及用户策略定义,对不健康的集群和服务器进行自动修复的任务。在集群运维平台从自动化、数字化走向智能化的征途中,集群智能自愈系统最先引入数据驱动、智能决策的理念,并借助机器学习等技术,大大提升了自动化运维的效率。集群智能自愈系统通过收集集群运维平台提供的状态机状态变化数据来实时跟踪集群健康状态,主要对集群层面和系统层面的故障和问题,如I/O-hang、负载过量、 ping 探测等进行自动判断和修复操作决策。 最初的修复策略及规则由运维专家进行人工配置和维护。基于规则的决策系统, 能很好地体现领域知识和经验,具有良好的可解释性和可执行性,但同时也暴露了以下问题。人工规则的复杂度和灵活度没有适配不同业务集群的各种异构场景,造成故 障判断准确率偏低。
集群故障问题只能在发生后进行被动响应和处理,然后根据故障的回溯,补 充新的规则,因此规则系统通常无法全面覆盖所有问题,尤其是在环境和应用发生变化时。
为了辅助规则决策系统解决上述问题,增加整体决策准确性,我们尝试利用海量的线上监控数据和状态信息,通过数据驱动的机器学习方案,融入领域知识,来进行 联合优化。整体智能化解决方案面临的技术核心挑战主要包括:
如何利用现有系统中大量的无效判决数据进行学习;
如何从多种不同监控数据中反向生成可组合、可解释的规则,对现有规则系统进行补充。
服务器的故障数据属于半结构化的日志数据,其本身就是文本,并且包含了由专家定义的故障名称及对应的故障等级,其语义具有潜在的故障模式含义。因此,我们可以将日志数据的分析挖掘,抽象为自然语言处理(Natural Language Processing)问题,并采用相应方法进行整体方案设计,主要包括从日志文本数据到文本向量的转换,以及从文本向量到修复决策的映射两个流程。其中,文本向量转换过程如图4 所示。我们首先从日志数据源中提取故障名称及对应的故障等级,并将故障等级通过设定的不同权重写入故障名称,组成故障文本。接着采用潜语义挖掘模型(LDA 主题模型),通过吉布斯采样的方式迭代运算,收敛后得出故障名称对应潜在故障模式的概率,从而形成文本向量输出。更进一步,也可以在数据量和标注数据量,足够的前提下,采用深度语言模型,例如,Attention、Bert 等先进方案,进行从文本到向量的转换。 在从文本向量到修复决策的映射阶段,我们设计了多层分类器。第一层:智能化判断修复决策的多分类器。
第二层:判断模型输出决策是否合理的二分类器。
多分类器对各类维修决策成功数据的文本向量进行分类学习,对每个服务器相关的故障数据监控项及其组合都会智能输出维修决策。需要注意的是,线上大量无效维修数据的文本向量经过多分类器同样会输出维修决策。由于该部分数据未经过修正,所以输出的决策依然可能是无效决策。我们叠加第二层的二分类器,分别学习各个决策下成功和无效的经验。这样在多分类后,对输出维修决策n进行二分类判断,输出正确决策将直接被采用,而模型判断为无效修复的部分,将在考虑决策代价的基础上(各维修决策本身具有相应的代价,如磁盘格式化决策的执行代价高于重启的代价),将决策消耗的资源及对应的时间量化排序,在下一次进行升级推荐。这样,多层分类器保证输出决策的准确率,同时对于无效的决策,通过迭代,尽量推荐代价最优的决策完成修复,同时提升了准确率和效率。整体流程如图5 所示。最后,在特征构造的过程中,我们还结合了异常事件统计分析、深度学习等方案进行辅助特征构造,并结合专家经验、知识和反馈进一步进行知识抽象,可以挖掘并形成新的组合规则,并具备良好的可解释性,用于弥补当前规则准确性和覆盖率不足的问题,最终积累形成服务器故障场景下的知识库,用于今后的故障根本原因分析。
《企业数字化基石:阿里巴巴云计算基础设施实践》
高山渊 蔡德忠 赵晓雪 刘礼寅 刘水旺 陈义全 徐波 编著 这是一本对阿里巴巴云计算基础设施技术实践的全面总结 ,并被赞誉对当前国内外云计算基础设施技术发展具有里程碑式的指导意义!它就是由阿里巴巴官方团队编著、承载着云计算技术风云变幻的著作 ——
本书将详细地阐述阿里巴巴在基础设施上的实践细节及先进技术,包括数据中心、网络、服务器、计算硬件、存储硬件,以及智能化运营与自动化运维等内容。
本书得到了阿里巴巴集团CTO兼阿里云智能事业群总裁张建锋(行癫)、阿里巴巴集团副总裁基础设施事业部负责人周明、中国信息通信研究院云计算与大数据研究所所长、开放数据中心委员会名誉主席何宝宏三位的亲笔作序推荐。
读者评论 《阿里巴巴云计算基础设施实践》这本书的书名并不吸引人,但是作者是实打实的AIS架构大牛人,人靠谱,写的东西也是阿里巴巴基础设施服务部门多少亿美金学费之后的经验分享,内容也靠谱。
第五章与第六章是我看的重点。
文笔非常工程师派头,比技术手册强一点,但是全是干货,每一段都能有极深的延展。挑自己的方向看下去,感觉遍地知识点……后背隐隐发凉,有种功课没做好被抽查到的后怕。
五星推荐。
不多说了,我接着做功课去了。
—— 来自首批读者留言
▲ 扫码获取本书详情 ▲
博文视点学院1元好课推荐
《码出高效:Java 开发手册》源于影响了全球250万名开发工程师的《阿里巴巴Java开发手册》,作者静心沉淀,对Java规约的来龙去脉进行了全面而彻底的内容梳理。现在扫描下方二维码,仅需1元!本书作者之一、阿里巴巴集团高级技术专家杨冠宝(孤尽)带你解读《码出高效》背后的故事,并奉上一场编程技术精进分享。
(扫码报名)
不想报名也没有关系添加下方小橘子微信,回复“免费”20+门精品课程免费等你拿
假期不停学,弯道好超车
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
热文推荐
▼ 点击阅读原文,获取本书详情!